iT邦幫忙

2023 iThome 鐵人賽

DAY 3
0
自我挑戰組

重新學 Go 30 天系列 第 3

[GO30] Day3 GO 變數宣告

  • 分享至 

  • xImage
  •  

變數宣告

Go 的變數宣告有以下幾種方式:

宣告變數再附值

var age int
age = 10

fmt.Println(age) // 10

// 多個變數寫法一 (限同型別)
var firstName, lastName string
firstName = "Dong"
lastName = "Li"

fmt.Println(firstName) // Dong
fmt.Println(lastName) // Li

// 多個變數寫法二
var (
	userID int
	email  string
)
userID = 123
email = "test@gmail.com"

fmt.Println(userID) // 123
fmt.Println(email)  // test@gmail

宣告變數同時給予預設值

var age int = 10
fmt.Println(age) // 10

// 也可省略型別,使它自動判斷型別
var nickname = "DongDong"
fmt.Println(nickname) // DongDong

// 宣告多個變數同時給予預設值
var (
	userID = 123
	email  = "test@gmail"
)
fmt.Println(userID) // 123
fmt.Println(email)  // test@gmail

使用 := 宣告變數

這是最常用的宣告方式,使用此方式可以自動判斷變數型別,但只限於在函數內使用

age := 10

fmt.Println(age) // 10

常數宣告

const pi = 3.1415926
fmt.Println(pi) // 3.1415926

// 宣告多個常數
const (
	a = 1
	b = 2
)
fmt.Println(a) // 1
fmt.Println(b) // 2

全域變數

package main

import "fmt"

var (
	username string = "foo"
	nickname string = "bar"
)

const pi = 3.1415926

func main() {
	fmt.Println(username) // foo
	fmt.Println(nickname) // var 

	fmt.Println(pi) // 3.1415926
}

使用全域變數時需要謹慎管理,以確保變數的一致性和避免衝突。全域變數可以在多個函數中被使用,過度使用全域變數可能會導致程式的可讀性和可維護性下降,因此需要謹慎管理。

引入變數

在 Go 中,當變數名稱或 function 名稱的子母開頭為大寫時,代表此變數或 function 是可被其他 package 引入的。例如:

// enum/enum.go
package enum

var (
	StatusPublished = "published"
	StatusDraft     = "draft"
)
// main.go
package main

import (
	"fmt"

	"github.com/Lockingdong/go30/day3/enum"
)

func main() {
	fmt.Println(enum.StatusPublished) // published
}

上一篇
[GO30] Day2 GO Package
下一篇
[GO30] Day4 GO 型別
系列文
重新學 Go 30 天10
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言